iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
Software Development

Node.js隨手札記 想到什麼就說什麼的系列 第 16

第十六天 router.use 跟 app.use 對於中間件 簡易介紹

  • 分享至 

  • xImage
  •  

首先先給我理解的懶人包~

router.use:搭配app.use適合針對某一前綴底下的API做特定的處理
ex:
創建router

const router = express.Router();

接著撰寫一個middware

router.use((req, res, next) => {
  console.log('在這裡做一些必要的檢查邏輯');
  next();
});

接著開始寫你的router

router.get('/wow', (req, res) => {
    console.log('商業邏輯');
});

接著使用app.use綁定起來

app.use('/user', router);

在這個狀況下當你去打

/user/wow

他就必須去跑

router.use((req, res, next) => {
  console.log('在這裡做一些必要的檢查邏輯');
  next();
});

這個邏輯
當然嚕,如果你其底下有綁定一個post方法,當你用post去打,也一樣要跑那個邏輯

所以小夥伴應該就知道了,我們可以把這個邏輯拉出來。
不只是針對middware,我們也可以用這個東西生成一個固定格式router
我們用AI來生成code

const express = require('express');
const router = express.Router();

// 處理 /users 路由的 GET 請求
router.get('/', function(req, res) {
  res.send('這是用戶列表');
});

// 處理 /users/:id 路由的 GET 請求
router.get('/:id', function(req, res) {
  const userId = req.params.id;
  res.send(`這是用戶 ${userId} 的詳細信息`);
});

// 處理 /users/:id 路由的 DELETE 請求
router.delete('/:id', function(req, res) {
  const userId = req.params.id;
  res.send(`刪除用戶 ${userId}`);
});

// 你可以繼續添加其他路由處理程序

module.exports = router;

接著引入

//引入上面檔案的路徑
const usersRouter = require('./routes/users');


app.use('/users', usersRouter);

這樣當我們去打/user的時候就可以自動進入到那一隻檔案了,
當然,也可以在裡面加上各自驗證的邏輯,就不會把邏輯都擠在一起了

app.use:適用於針對全局middware。

ex:app.use(express.json());
這就是很標準的針對所有router都擁有middware效果的例子

當然嚕,肯定有更多厲害的用法,不過目前理解起來應該主要應用在這兩個地方
希望能幫助到你們~


上一篇
第十五天 node如何接收前端的request
下一篇
第十七天 async & await 簡易介紹
系列文
Node.js隨手札記 想到什麼就說什麼的30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言